local Log = require('x_cmp_cn.log')
local M = {}

-- 测试提供固定补全项，C-x C-u 正常工作
function M.test_fixed_string(findstart, base)
	if findstart == 1 then
		return -1
	else
		vim.schedule(function()
			local mode = vim.api.nvim_get_mode().mode 
			if  mode == "ic" then
				vim.fn.complete(vim.fn.col("."), {"中文", "词汇", "补全"})
			else
				Log.write_log("无法调用 complete()，当前模式: "..mode)
			end
		end
		)
	end
end

-- 测试 row, col, bytes, chars
function M.test_cmp_context(findstart, base)
	if findstart == 1 then
		-- 行
		local r = vim.fn.line('.')
		local line_content = vim.api.nvim_get_current_line()
		Log.write_log("第一次调用 - 行号: " .. r .. ", 行内容: " .. line_content)

		-- 列
		local c1 = vim.fn.col('.')
		local c2 = vim.fn.charcol('.')
		Log.write_log("\tbytes 列号: ".. c1.."，char 列号: "..c2)

		-- byte VS char
		local line_bytes_cnt = #line_content
		local line_chars_cnt = vim.fn.strchars(line_content)
		Log.write_log("\t行计数，bytes 数: " .. line_bytes_cnt.."，char 数:"..line_chars_cnt)
		return -1
	else
		return -1
	end
end

function M.left_char_of_cur_col()
	local c = vim.fn.charcol('.') -- 左侧有c-1字符，光标在 c 个字符处
	local idx = c - 2 -- idx 从 0 开始, 减 1 是左侧字符，再减 1 是0-based idx
	if idx < 0 then
		--Log.write_log("idx = "..idx..", 左侧无字符")
		return nil
	else
		--Log.write_log("idx = "..idx..", 左侧字符= "..left_char)
		local line_content = vim.api.nvim_get_current_line()
		return vim.fn.strcharpart(line_content, idx, 1)
	end
end

-- 查找左侧字符
function M.test_find_left(findstart, base)
	if findstart == 1 then
		local l_char = M.left_char_of_cur_col()
		if l_char == nil then
			Log.write_log("左侧无字符")
		else
			Log.write_log("左侧字符= "..l_char)
		end
		return -1
	else
		return -1
	end
end

-- 检查是否为汉字
local function is_chinese_char(char)
  if not char or char == "" then return false end
  local cp = vim.fn.char2nr(char) -- 使用Neovim内置函数获取Unicode码点
  return cp >= 0x4E00 and cp <= 0x9FFF
end

function M.test_is_chinese(findstart, base)
	if findstart == 1 then
		local l_char = M.left_char_of_cur_col()
		if l_char == nil then
			Log.write_log("左侧为空")
		elseif is_chinese_char(l_char) then
			Log.write_log(l_char.." 是汉字")
		else
			Log.write_log(l_char.." 不是汉字")
		end
	else
		return -1
	end
end

-- 初始化
function M.setup()
	-- Event: 打开文件，确定FileType
	vim.api.nvim_create_autocmd("FileType", {
		pattern = {"text", "markdown"},
		callback = function()
			vim.bo.completefunc = "v:lua.require'x_cmp_cn.test.testL_CxCu'.test_fixed_string"
		end
	})
end

return M
